<?php
App::uses('AppController', 'Controller');

class MensagemsController extends AppController {
	
	var $components = array('Email');

	public function beforeFilter(){
		parent::beforeFilter();
		$this->Auth->allow('novo');
	} 

	public function lista() {
		$this->Mensagem->recursive = 0;
		$this->paginate = array('order'=>'Mensagem.created DESC');
		$this->set('mensagems', $this->paginate());
		$this->render('index');
	}


	public function info($id = null) {
		$this->Mensagem->id = $id;
		if (!$this->Mensagem->exists()) {
			throw new NotFoundException(__('Mensagem inválido'));
		}
		$mensagem = $this->Mensagem->read(null, $id);
		if(!$this->Mensagem->isLida()){
			$this->Mensagem->marcarComoLida();
			$this->Session->write('Mensagens.nao_lidas', $this->Session->read('Mensagens.nao_lidas')-1);
		}
		$this->set('mensagem', $this->Mensagem->read(null, $id));
		$this->render('view');
	}

	public function novo($anuncio) {
		if ($this->request->is('post')) {
			$this->Mensagem->create();
			$anuncio = $this->Mensagem->Anuncio->findByIdAnuncios($this->request->data['Mensagem']['anuncio_id']);
			$this->request->data['Mensagem']['usuario_id'] = $anuncio['Anuncio']['usuario_id'];
			if ($this->Mensagem->save($this->request->data)) {
				$this->enviaEmail($this->request->data);
				$this->Session->setFlash(__('Mensagem enviada com sucesso!'));
				$this->redirect(array('controller'=>'anuncios', 'action' => 'busca_generica'));
			} else {
				$this->Session->setFlash(__('Mensagem não pode ser salva. Por favor tente novamente'));
			}
		}
		$this->set(compact('anuncio', 'usuarios'));
	$this->render('add');
	}
	
	private function enviaEmail($dados){
		$this->loadModel('Usuario');
		$this->Usuario->recursive = 0;
		$usuario = $this->Usuario->findByIdUsuarios($dados['Mensagem']['usuario_id']);
		$this->Email->novoEmail();
		$this->Email->template('nova_mensagem','default');
		$this->Email->assunto('HomeStay2014 - Você tem um novo contato!');
		$this->Email->destinatario(array($usuario['Usuario']['email'] => $usuario['Usuario']['nome']));
		// Basta o usuário responder ao E-mail para enviar o E-mail para a pessoa que entrou em contato
		$this->Email->replyTo($dados['Mensagem']['email_contato']);
		$this->Email->set("nome_usuario", $usuario['Usuario']['nome']);
		$this->Email->set("nome_contato", $dados['Mensagem']['nome_contato']);
		$this->Email->set("texto", $dados['Mensagem']['texto']);
		$this->Email->set("telefone", $dados['Mensagem']['telefone_contato']);
		$this->Email->set("email_contato", $dados['Mensagem']['email_contato']);
		$this->Email->set("anuncio", $dados['Mensagem']['anuncio_id']);
		$this->Email->mensagem("");
	}
}
